A storage server is a special purpose processing system used to store and retrieve data on behalf of one or more clients. A file server is an example of a storage server. A file server operates on behalf of one or more clients to store and manage shared files in a set of mass storage devices, such as magnetic or optical storage-based disks or tapes. In various prior art systems, the mass storage devices may be organized into one or more groups of disks [e.g. redundant array of inexpensive disks (RAID), etc.]. These disks, in turn, define an overall logical arrangement of storage space including one or more storage volumes.
The aforementioned file server further includes a storage operating system that implements a file system to logically organize data as a hierarchical structure of directories and files on the foregoing disks. Each on-disk file may be implemented as a set of blocks configured to store data, such as text, whereas a directory may be implemented as a specially-formatted file in which information about other files and directories are stored. One example of such a file system is the Write Anywhere File Layout (WAFL™) file system available from Network Appliance, Inc.
In use, the file server may incorporate various features such as the generation of certain kinds of data storage images. Image generation may, for example, include mirroring, in which a mirror copy of certain data at one location is maintained at another location, snapshots, and/or clones of storage volumes. Mirroring of data may be done for various different purposes. For instance, mirroring provides a mechanism for ensuring data availability and minimizing down time, and may be used to provide disaster recovery. In addition, snapshots provide point-in-time images of data, and clones generally provide a writeable image of data, which may be used for various purposes in data operations.
Before use (e.g. at boot-up, etc.), storage volumes are typically mounted to make the file system accessible. Such mounting involves the attachment of the file system to the file/directory hierarchy. To accomplish this, various metadata (e.g. information describing previous instances of the aforementioned features, etc.) is first required, and is therefore retrieved from specific blocks in the associated storage volume.
Since these different blocks are generally interdependent (e.g. by referencing each other in a hierarchical or tree-like manner, etc.), such blocks are typically retrieved in a serial and/or sequential manner. For example, a first block may be referenced by a second block, etc. Thus, prior to mounting, the second block must be retrieved before the first, etc. Such sequential input/output (I/O) access pattern, in turn, constrains the speed with which the blocks can be retrieved and the mounting completed. The resultant boot-up latency is further exacerbated by the larger number of blocks that are typically required with the incorporation of more features in association with the associated storage volume. Still yet, in situations where multiple storage volumes are to be mounted, latency is even further compounded.